﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace mrp16062010
{
    [Serializable()]
    class Siparis:ISerializable
    {
        public int Id { get; set; }
        public Siparis(int no, Rota.RotaParcasi gelenRota, int gelenAdet, Tarih gelenTarih)
        {

            rota = gelenRota;
            adet = gelenAdet;
            //gelenRota.SiparisAdedi = adet;
            siparisNo = no;
            tarihBilgisi = gelenTarih;
        }

        private Tarih tarihBilgisi;

        public Tarih TarihBilgisi
        {
            get { return tarihBilgisi; }
            set { tarihBilgisi = value; }
        }
        

        private int siparisNo;

        public int SiparisNo
        {
            get { return siparisNo; }
            set { siparisNo = value; }
        }

        private int adet;

        public int Adet
        {
            get { return adet; }
            set
            {
                adet = value;
                //rota.SiparisAdedi = value;
            }
        }

        private Stok stokSiparis;

        public Stok StokSiparis
        {
            get { return stokSiparis; }
            set { stokSiparis = value; }
        }

        private Rota.RotaParcasi rota;

        public Rota.RotaParcasi Rota
        {
            get { return rota; }
            set
            {
                rota = value;
                //rota.Adet = this.adet;
            }
        }
        [NonSerialized]
        private List<IsParcasi> isParcalari = new List<IsParcasi>();

        public List<IsParcasi> IsParcalari
        {
            get { return isParcalari; }
            set { isParcalari = value; }
        }
        
        
        public Tarih SimilasyonTarihleri = new Tarih();
        public Tarih PlanlamaTarihleri = new Tarih();

        public Siparis Kopyala()
        {
            Siparis kopya = new Siparis(this.siparisNo, this.rota, this.adet, this.tarihBilgisi);
            return kopya;
        }

        public Siparis(SerializationInfo info, StreamingContext ctxt)
        {
            Serialize.InfoCopier.Read(info, this);
        }

        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            Serialize.InfoCopier.Write(info, this);
        }

        public void TWKHesapla(int kSabiti)
        {
            Rota.RotaParcasi enUzunDal = this.rota.EnUzunDal();
            TimeSpan uzunluk = enUzunDal.Uzunluk(this.rota, this.Adet);

            TimeSpan eklenecek = new TimeSpan(uzunluk.Ticks);

            eklenecek = TimeSpan.FromMinutes(eklenecek.TotalMinutes * kSabiti);//3 kat sayısı günün 24 saat değil 8 saat olmasından

            this.TarihBilgisi.BitisTarihi = this.tarihBilgisi.BaslangicTarihi.Yerlestirme(eklenecek);
            //this.TarihBilgisi.BitisTarihi = this.TarihBilgisi.BaslangicTarihi.Add(eklenecek);
            //this.TarihBilgisi.BitisTarihi = this.TarihBilgisi.BitisTarihi.ChangeTime(17, 30, 0, 0);
        }
    }
}
